The invention relates to control of work flow between processes on a bus, and in particular to the management of logical connections between processes for the sharing of processor resources.
In prior process to process communications, where the methods of communication are transparent to the communicating processes, one unit containing processes requests work to be performed by another unit on the bus. The data to be operated on is in the requestor's storage, and the server unit, that is, the unit that is executing the request, has access to the data. Prior systems lacked a means for fairly managing the logical connection between processes so that a minimum level of service would be available. The level of service is dependent on the system resources allocated.
From the point of view of programming processes, the resource that is shared is the work provided by the server process. The units of this resource are work requests. All users of any server must be guaranteed a minimum level of access to that resource, that is, must be allowed to have some number of outstanding work requests and be assured that these requests will be eventually presented to the server for processing.
Most bus implementations use individual signal lines to confirm the acceptance or rejection of messages indicating work requests. For telecommunications applications, a pacing mechanism has been implemented for flow control. SNA uses a counting mechanism. The initiator of messages is allowed a maximum number of messages to be outstanding until a confirmation is received. The number of messages that could be outstanding have to be established by the receiver of the messages, and the pacing control of messages outstanding would have to be the responsibility of the sender of messages. Thus each individual sender and receiver is directly involved in flow control.
In U.S. Pat. No. 4,449,182 to Rubinson et al., a command ring and a response ring are stored in the host processor main storage. They contain space for commands to an I/O controller processor and space for responses to the commands from the controller. There is one response ring and one command ring for each I/O controller. An ownership bit is used to prevent one of the processors from writing over a command not yet processed by the I/O controller or a response not yet read by the host processor. If the command ring is full, or the response ring is empty, the host is told not to keep checking the rings until it receives an interrupt indicating that the command ring has become not full, or the response ring has become not empty. Both processors contain pointers indicating the next location in the rings it should read or write. Thus, in a very primitive fashion, a simple type of flow control between devices has been established.
The Rubinson et al. patent does not address the problem of resource allocation for multiple processes communicating with each other. It does not guarantee a minimum level of service by multiple processes running in either processor. Communications in a multiprocess environment are much more complicated given different queueing delays and the independence of the processes.